package com.baizhi.sync;

/**
 * 银行账户
 */
public class Account {
    private String cardId;
    private double money; //账户余额

    public Account() {
    }

    public Account(String cardId, double money) {
        this.cardId = cardId;
        this.money = money;
    }

    //提供一个方法，花钱的方法, //祁博的卡，他自己可以刷，他的卡，他女朋友通过京东消费，  他前女友也可以刷
    //方法上加上synchronized表示这是一个同步方法，不允许多个线程同时操作
    //synchronized在这里阻挡了同一个acc
    public synchronized  void drawMoney(double money){
        //获取谁在刷这张卡
        String name = Thread.currentThread().getName();
        //花钱，如果余额大于要花的钱才能让花，
        if(this.money > money){
            System.out.println(name + "花费了" + money);
            //更新余额
            this.money -= money;
            System.out.println(name + "花费后余额："+this.money);
        }else{
            System.out.println(name + "来取钱，余额不足");
        }


    }


    public String getCardId() {
        return cardId;
    }

    public void setCardId(String cardId) {
        this.cardId = cardId;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Account{" +
                "cardId='" + cardId + '\'' +
                ", money=" + money +
                '}';
    }
}
